/********************************************************************* * * Copyright (C) 2002 Andrew Khan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ***************************************************************************/ package jxl.read.biff; import jxl.common.Logger; import jxl.biff.DoubleHelper; import jxl.biff.IntegerHelper; import jxl.biff.RecordData; import jxl.biff.Type; /** * Contains the page set up for a sheet */ public class SetupRecord extends RecordData { // The logger private static Logger logger = Logger.getLogger(SetupRecord.class); /** * The raw data */ private byte[] data; /** * The orientation flag */ private boolean portraitOrientation; /** * The Page Order flag */ private boolean pageOrder; /** * The header margin */ private double headerMargin; /** * The footer margin */ private double footerMargin; /** * The paper size */ private int paperSize; /** * The scale factor */ private int scaleFactor; /** * The page start */ private int pageStart; /** * The fit width */ private int fitWidth; /** * The fit height */ private int fitHeight; /** * The horizontal print resolution */ private int horizontalPrintResolution; /** * The vertical print resolution */ private int verticalPrintResolution; /** * The number of copies */ private int copies; /** * Indicates whether the setup data should be initiliazed in the setup * box */ private boolean initialized; /** * Constructor which creates this object from the binary data * * @param t the record */ SetupRecord(Record t) { super(Type.SETUP); data = t.getData(); paperSize = IntegerHelper.getInt(data[0], data[1]); scaleFactor = IntegerHelper.getInt(data[2], data[3]); pageStart = IntegerHelper.getInt(data[4], data[5]); fitWidth = IntegerHelper.getInt(data[6], data[7]); fitHeight = IntegerHelper.getInt(data[8], data[9]); horizontalPrintResolution = IntegerHelper.getInt(data[12], data[13]); verticalPrintResolution = IntegerHelper.getInt(data[14], data[15]); copies = IntegerHelper.getInt(data[32], data[33]); headerMargin = DoubleHelper.getIEEEDouble(data, 16); footerMargin = DoubleHelper.getIEEEDouble(data, 24); int grbit = IntegerHelper.getInt(data[10], data[11]); pageOrder = ((grbit & 0x01) != 0); portraitOrientation = ((grbit & 0x02) != 0); initialized = ( (grbit & 0x04) == 0); } /** * Accessor for the orientation. Called when copying sheets * * @return TRUE if the orientation is portrait, FALSE if it is landscape */ public boolean isPortrait() { return portraitOrientation; } /** * Accessor for the page order. Called when copying sheets * * @return TRUE if the page order is Left to Right, then Down, otherwise * FALSE */ public boolean isRightDown() { return pageOrder; } /** * Accessor for the header. Called when copying sheets * * @return the header margin */ public double getHeaderMargin() { return headerMargin; } /** * Accessor for the footer. Called when copying sheets * * @return the footer margin */ public double getFooterMargin() { return footerMargin; } /** * Accessor for the paper size. Called when copying sheets * * @return the footer margin */ public int getPaperSize() { return paperSize; } /** * Accessor for the scale factor. Called when copying sheets * * @return the scale factor */ public int getScaleFactor() { return scaleFactor; } /** * Accessor for the page height. called when copying sheets * * @return the page to start printing at */ public int getPageStart() { return pageStart; } /** * Accessor for the fit width. Called when copying sheets * * @return the fit width */ public int getFitWidth() { return fitWidth; } /** * Accessor for the fit height. Called when copying sheets * * @return the fit height */ public int getFitHeight() { return fitHeight; } /** * The horizontal print resolution. Called when copying sheets * * @return the horizontal print resolution */ public int getHorizontalPrintResolution() { return horizontalPrintResolution; } /** * Accessor for the vertical print resolution. Called when copying sheets * * @return an vertical print resolution */ public int getVerticalPrintResolution() { return verticalPrintResolution; } /** * Accessor for the number of copies * * @return the number of copies */ public int getCopies() { return copies; } /** * Accessor for the initialized flag * * @return whether the print page setup should be initialized in the dialog * box */ public boolean getInitialized() { return initialized; } }